Biometric
Biometric讓用戶不必每次打開APP時都記住帳戶用戶名和密碼,只需使用生物識別來確認並授權訪問。
BiometricManager.from(this).canAuthenticate():取得目前系統生物識別狀態。
BiometricPrompt.PromptInfo.Builder():創建生物識別資訊。
BiometricPrompt("要顯示的Fragment", "在主線程執行", "生物識別回調").authenticate("BiometricPrompt.PromptInfo"):設置生物識別資訊,並取得回調資訊。
dependencies {
implementation 'androidx.biometric:biometric:1.0.1'
}
判斷手機系統的生物識別
val biometricManager = BiometricManager.from(this)
when (biometricManager.canAuthenticate()) {
BiometricManager.BIOMETRIC_SUCCESS ->
Log.e("GOGO", "可以使用")
BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE ->
Log.e("GOGO", "硬體不支持此功能")
BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE ->
Log.e("GOGO", "目前無法使用")
BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED ->
Log.e("GOGO", "沒有設置")
}
調用生物識別
//設置參數
val info = BiometricPrompt.PromptInfo.Builder()
.setTitle("標題")
.setSubtitle("副標題")
.setNegativeButtonText("取消")
.build()
//設置回調
BiometricPrompt(this, ContextCompat.getMainExecutor(this),
object : BiometricPrompt.AuthenticationCallback() {
override fun onAuthenticationError(errorCode: Int, errString: CharSequence) {
super.onAuthenticationError(errorCode, errString)
Log.d("GOGO", errString.toString())
}
override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult) {
super.onAuthenticationSucceeded(result)
Log.d("GOGO", "成功")
}
override fun onAuthenticationFailed() {
super.onAuthenticationFailed()
Log.d("GOGO", "失敗")
}
}).authenticate(info)